////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2011-2012 www.iflytek.com. All Rights Reserved.
//  This software for customer relationship management system, developed by Noo team.
//  Software code and design for the team, copy rights reserved.
////////////////////////////////////////////////////////////////////////////////

package com.iflytek.ci.cums.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.iflytek.framework.web.jackson.CustomDateTimeSerializer;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.validation.annotation.Validated;

/**
 * <p>
 * 用户信息.
 * </p>
 * 
 * @author poplar.yfyang
 * @version 1.0 2012-10-25 9:58 PM
 * @since JDK 1.5
 */
@Validated
@JsonIgnoreProperties(value = "password")
public class Account implements Serializable {
	/**
	 * serial version
	 */
	private static final long serialVersionUID = -2720358264488851682L;
	/** 主键 */
	private long id;
	/** 登录名称 */
	@NotEmpty(message = "error.account.login.empty")
	private String login;
	/** 登录密码 */
	private String password;
	/** 姓名 */
	private String name;
	/** 注册邮箱 */
	private String mail;
	/** 状态 */
	private int status;
	/** 最后登录时间 */
	private Date lastLogin;
	/** 语言，保留字段 */
	private String language;
	/** 创建时间 */
	@JsonSerialize(using = CustomDateTimeSerializer.class)
	private Date create;
	/** 更新时间 */
	@JsonSerialize(using = CustomDateTimeSerializer.class)
	private Date updated;
	/** 类型 */
	private String type;
	/** 角色 */
	private List<Integer> roles;

	/**
	 * 获取用户角色
	 * 
	 * @return roles
	 */
	public List<Integer> getRoles() {
		return roles;
	}

	/**
	 * 设置用户角色
	 * 
	 * @param roles
	 *            用户角色
	 */
	public void setRoles(List<Integer> roles) {
		this.roles = roles;
	}

	/**
	 * 获取用户id
	 * 
	 * @return 用户id
	 */
	public long getId() {
		return id;
	}

	/**
	 * 设置用户id
	 * 
	 * @param id
	 *            用户id信息
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * 获取用户登录名
	 * 
	 * @return 登录名
	 */
	public String getLogin() {
		return login;
	}

	/**
	 * 设置用户登录名
	 * 
	 * @param login
	 *            登录名
	 */
	public void setLogin(String login) {
		this.login = login;
	}

	/**
	 * 获取用户密码
	 * 
	 * @return 用户密码
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * 设置用户密码
	 * 
	 * @param password
	 *            密码
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * 获取用户真实姓名
	 * 
	 * @return 用户名称
	 */
	public String getName() {
		return name;
	}

	/**
	 * 设置用户的真实姓名
	 * 
	 * @param name
	 *            用户真实名
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * 获取用户的电子邮件地址
	 * 
	 * @return 用户邮箱
	 */
	public String getMail() {
		return mail;
	}

	/**
	 * 设置用户的电子邮件地址
	 * 
	 * @param mail
	 *            邮箱地址
	 */
	public void setMail(String mail) {
		this.mail = mail;
	}

	/**
	 * 获取该用户的状态
	 * 
	 * @return 用户状态
	 */
	public int getStatus() {
		return status;
	}

	/**
	 * 设置该用户的状态
	 * 
	 * @param status
	 *            状态
	 */
	public void setStatus(int status) {
		this.status = status;
	}

	/**
	 * 获取该用户最后的登录时间
	 * 
	 * @return 登录时间
	 */
	public Date getLastLogin() {
		return lastLogin;
	}

	/**
	 * 设置最后登录时间
	 * 
	 * @param lastLogin
	 *            最后登录时间
	 */
	public void setLastLogin(Date lastLogin) {
		this.lastLogin = lastLogin;
	}

	/**
	 * 获取用户语言
	 * 
	 * @return 用户语言
	 */
	public String getLanguage() {
		return language;
	}

	/**
	 * 设置语言
	 * 
	 * @param language
	 *            用户语言
	 */
	public void setLanguage(String language) {
		this.language = language;
	}

	/**
	 * 获取最后更新该用户的时间
	 * 
	 * @return 更新时间
	 */
	public Date getUpdated() {
		return updated;
	}

	/**
	 * 设置最后更新时间
	 * 
	 * @param updated
	 *            更新时间
	 */
	public void setUpdated(Date updated) {
		this.updated = updated;
	}

	/**
	 * 获取用户类型
	 * 
	 * @return 用户类型
	 */
	public String getType() {
		return type;
	}

	/**
	 * 设置用户的类型
	 * 
	 * @param type
	 *            用户类型
	 */
	public void setType(String type) {
		this.type = type;
	}

	/**
	 * 获取添加该用户的时间
	 * 
	 * @return 添加的时间
	 */
	public Date getCreate() {
		return create;
	}

	/**
	 * 设置添加该用户的时间
	 * 
	 * @param create
	 *            添加时间
	 */
	public void setCreate(Date create) {
		this.create = create;
	}
}
